package org.fanrui.hrm.service.impl;

import org.fanrui.hrm.domain.CourseType;
import org.fanrui.hrm.mapper.CourseTypeMapper;
import org.fanrui.hrm.service.ICourseTypeService;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;

/**
 * <p>
 * 课程目录 服务实现类
 * </p>
 *
 * @author fanrui
 * @since 2024-09-19
 */
@Service
public class CourseTypeServiceImpl extends ServiceImpl<CourseTypeMapper, CourseType> implements ICourseTypeService {

    @Resource
    private CourseTypeMapper courseTypeMapper;

    /**
     * 获取课程类型目录树形结构
     *
     * @return 课程目录树
     */
    @Override
    public List<CourseType> treeData(Long id) {
        //方式一 有n+1问题
        // return courseTypeMapper.treeData(id);
        //方式二 （推荐）
        //查询出所有的分类
        List<CourseType> allCourseType = super.selectList(null);
        //找出第一层
        List<CourseType> firstLevel = new ArrayList<>();
        allCourseType.forEach(courseType -> {
            if (courseType.getPid().longValue() == id || courseType.getPid() == null) {
                firstLevel.add(courseType);
            } else { // 如果是其它层级，则找到各自的父级，添加到各自的父级中
                for (CourseType courseTypeOther : allCourseType) {
                    if (courseType.getPid().longValue() == courseTypeOther.getId().longValue()) {
                        courseTypeOther.getChildren().add(courseType);
                        break;
                    }
                }
            }
        });
        return firstLevel;
    }
}
